//
//  TableCellSingleton.m
//  Bus
//
//  Created by wangjiajia on 13-8-8.
//  Copyright (c) 2013年 wangjiajia. All rights reserved.
//

#import "TableCellSingleton.h"
#import "LoadMoreCell.h"
@implementation TableCellSingleton

#pragma mark- 类方法实现，获取一个自定义的TableViewCell
+(UITableViewCell *)getLoadMoreCell:(UITableView *)tableView isLoadOver:(BOOL)isLoadOver isLaoding:(BOOL)isLoading{
    LoadMoreCell * cell = [tableView dequeueReusableCellWithIdentifier:@"LoadMoreCell"];
    if (!cell) {
        //用自定义布局 初始化
        NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"LoadMoreCell" owner:self options:nil];
        //过滤出自定义的控件
        //        for (NSObject *o in objects) {
        //            if ([o isKindOfClass:[LoadMoreCell class]]) {
        //                cell = (LoadMoreCell *)o;
        //                break;
        //            }
        //        }
        //NSLog(@"LoadMoreCell中有%d个组件",objects.count);//1个
         cell=(LoadMoreCell *)[objects lastObject];
         //[cell setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"list_bg.png"]]];//没效果，颜色怎么设置都是透明色
        //[cell setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"view_bg6.png"]]];
        
    }
    //这些提示字符可以作为参数，供外界动态指定
    cell.loadStr.text = isLoadOver ? @"已经加载全部数据" :isLoading ?@"努力加载中...":@"加载更多...";
    
    if (isLoading) {
        cell.loadingIndicator.hidden = NO;
        [cell.loadingIndicator startAnimating];
    }
    else
    {
        cell.loadingIndicator.hidden = YES;
        [cell.loadingIndicator stopAnimating];
    }
    return cell;

}

#pragma mark-单例模式定义
static TableCellSingleton * instance = nil;//1、为单例对象实现一个静态实例，并初始化，然后设置成nil，

//2、实现一个静态实例构造方法检查上面声明的静态实例是否为nil，如果是nil则新建并返回一个本类的实例，
+(TableCellSingleton *) Instance
{
    @synchronized(self)
    {
        if(nil == instance)
        {
            [self new];//会调用allocWithZone
        }
    }
    return instance;
}
//3、重写allocWithZone方法，用来保证其他人直接使用alloc和init试图获得一个新实例的时候不产生一个新实例，
+(id)allocWithZone:(NSZone *)zone
{
    @synchronized(self)
    {
        if(instance == nil)
        {
            instance = [super allocWithZone:zone];
            return instance;
        }
    }
    return nil;
}

@end
